package com.ljx.offer;

import org.junit.Test;

/**
 * @author 李捷禧
 * Date: 2023/3/26
 * ClassName: C_16
 */

public class C_16 {
    /**
     * 自己用sum *= x; b--;
     * 这样就是超时了
     * @param x
     * @param n
     * @return
     */
    public double myPow(double x, int n) {
        if(n == 0) return 1;
        if(x == 0) return 0;
        long b = n;
        double sum = 1.0;
        if(b < 0){
            b = -b;
            x = 1 / x;
        }
        //当 n & 1 = 1时：将当前 x乘入 res（即 res *= x）；
        //执行 x = x^2（即 x *= x）；
        //执行 nn 右移一位（即 n >>= 1）。
                while( b > 0){
                    if((b & 1) == 1) sum *= x;
                    x *= x;
                    b>>=1;
                }
        return sum;
    }

    @Test
    public void test() {
        double v = myPow(0.2, 2);
        System.out.println(v);

    }
}
